home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / getrefs.fpl < prev    next >
Text File  |  1995-08-14  |  3KB  |  156 lines

  1. export void GetRefs(string name)
  2. {
  3. string temp, wrd;
  4. int buffer, prevbuf;
  5. int x;
  6.  
  7. Visible(0);
  8.  
  9. /* Check if buffer already exists */
  10. buffer=prevbuf=GetBufferID();
  11. do
  12.     {
  13.     temp=ReadInfo("file_name");
  14.     if(!(stricmp(temp, name)))
  15.         {
  16.         Request("Function description already loaded", "Error");
  17.         return;
  18.         }
  19.     buffer=NextBuffer(buffer);
  20.     if(buffer==prevbuf)
  21.         buffer=0;
  22.     else
  23.         CurrentBuffer(buffer);
  24.     } 
  25.     while(buffer);
  26.  
  27. CurrentBuffer(prevbuf);
  28.  
  29. /* Buffer not loaded */
  30.  
  31. if(strlen(name))
  32.     wrd=temp=name;
  33. else
  34.     wrd=temp=GetWord();
  35.  
  36. buffer=New();
  37. prevbuf=CurrentBuffer(buffer);
  38. if(ReadInfo("manual_temp_save"))
  39.     {
  40.     string tmp;
  41.     Status(prevbuf, "Checking temp directory", 3);
  42.     tmp=joinstr(ReadInfo("manual_temp_dir"), name, ReadInfo("manual_temp_end"));
  43.     x=Check(tmp);
  44.     if(x)
  45.         {
  46.         /* File exists in temppath */
  47.         Load(tmp);
  48.         Status(prevbuf, "", 3);
  49.         Visible(1);
  50.         return;
  51.         }
  52.     }
  53.  
  54. Status(prevbuf, "Getting reference...", 3);
  55.  
  56. Load(joinstr(ReadInfo("manual_path"), ReadInfo("manual_file")));
  57.  
  58. Status(prevbuf, "Searching...", 3);
  59. x=Search(temp,"=f+c+o+");
  60.  
  61. if(x>=0)
  62.     {
  63.     /* Line found. Work todo */
  64.  
  65.     string trash, file, row;
  66.     temp=GetLine();
  67.     sscanf(temp,"%s%s%s%s", &trash, &trash, &file, &row);
  68.     row=substr(row, 2, -1);
  69.  
  70.     Clear();
  71.     SetInfo(buffer, "changes", 0);
  72.  
  73.     temp=joinstr("Loading manualfile...(", file, ")");
  74.     Status(prevbuf, temp, 3);
  75.  
  76.     file=joinstr(ReadInfo("manual_path"),file);
  77.     Load(file);
  78.     GotoLine(0,0);
  79.     CursorRight(atoi(row));
  80.     BlockMark(1);
  81.     Search("\x0c", "=f+w+");
  82.     BlockCopy(0);
  83.     BlockMark(0);
  84.  
  85.     Status(prevbuf, "Getting function...", 3);
  86.     Clear();
  87.     SetInfo(buffer,"changes", 0);
  88.     CurrentBuffer(buffer);
  89.  
  90.     BlockPaste(0);
  91.     
  92.     GotoLine(0,0);
  93.     SetInfo(buffer, "changes",0);
  94.  
  95.     temp=joinstr(wrd, ReadInfo("manual_temp_end"));
  96.     Rename(wrd);
  97.  
  98.     if(ReadInfo("manual_temp_save"))
  99.         {
  100.         Status(prevbuf, "Writing manual temp file", 3);
  101.         temp=joinstr(ReadInfo("manual_temp_dir"), temp);
  102.         Save(temp, ReadInfo("manual_temp_pack"));
  103.         }
  104.     Status(prevbuf, "", 3);
  105.     Visible(1);
  106.     }
  107. else
  108.     {
  109.     Request("Function not found","Error");
  110.     CurrentBuffer(prevbuf);
  111.     Kill(buffer);
  112.     Status(prevbuf, "", 3);
  113.     Visible(1);
  114.     }
  115. }
  116.  
  117. export void ManualPrefs()
  118. {
  119. PromptInfo(-1, "Manual preferences", -1 , -1,
  120.     "manual_path",
  121.     "manual_file"
  122.     "manual_temp_save",
  123.     "manual_temp_dir",
  124.     "manual_temp_end",
  125.     "manual_temp_pack",
  126.     );
  127. }
  128.  
  129. export void GetManRefs(void)
  130. {
  131. string temp;
  132.  
  133. temp=PromptString("", "GetRefs", "Which keyword to search for");
  134. if(strlen(temp))
  135.     GetRefs(temp);
  136. }
  137.  
  138. {
  139. //AssignKey("GetRefs(\"\");", "Control ]");
  140. //AssignKey("GetManRefs();", "Alt ]");
  141.  
  142. ConstructInfo("manual_path", "", "", "WHLS", "", 0, 0, "MAN:");
  143. ConstructInfo("manual_file", "", "", "WHLS", "", 0, 0, "dme.refs");
  144. ConstructInfo("manual_temp_dir", "", "", "WHLS", "", 0, 0, "t:");
  145. ConstructInfo("manual_temp_end", "", "", "WHLS", "", 0, 0, ".mtmp");
  146. ConstructInfo("manual_temp_save", "", "", "WHLB", "", 0, 1, 1);
  147. ConstructInfo("manual_temp_pack", "", "", "WLHS", "", 0, 0, "NUKE");
  148.  
  149. MenuAdd("s", "Manual...", "ManualPrefs();", "", 6, 6, -1);
  150. MenuAdd("i", "---", "", "", 5, -1);
  151. MenuAdd("i", "Search Word", "GetRefs(\"\");", "Control ]", 5, -1);
  152. MenuAdd("i", "Search Current Word", "GetManRefs();", "Alt ]", 5, -1);
  153. MenuBuild();
  154.  
  155. }
  156.